package com.aaa.market.controller;

import com.aaa.common.constants.ExceptionConstant;
import com.aaa.common.constants.ReturnCode;
import com.aaa.common.util.CustomException;
import com.aaa.common.util.Result;
import com.aaa.market.entity.Coupon;
import com.aaa.market.service.CouponService;

import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.util.Map;

/**
 * 优惠卷表(Coupon)表控制层
 *
 * @author makejava
 * @since 2020-11-18 08:23:36
 */
@RestController
@RequestMapping("coupon")
public class CouponController {
    /**
     * 服务对象
     */
    @Resource
    private CouponService couponService;

    /**
     * 通过主键查询单条数据
     *
     * @param id 主键
     * @return 单条数据
     */
    @ApiOperation(value = "根据ID查询")
    @GetMapping("selectOne")
    public Result selectOne(Integer id) {
        //当Id为null时抛出自定义异常
        if (id==null){
            throw new CustomException(ExceptionConstant.INVALID_ARGUMENT.getErrorCode()
                    ,ExceptionConstant.INVALID_ARGUMENT.getErrorMessage());
        }
        //返回成功
        return new Result(ReturnCode.SUCCESSS.getCode(),
                ReturnCode.SUCCESSS.getMsg(),couponService.queryById(id));

    }


    /**
     * 查询全部以及根据条件查询
     * 根据类型查询时 优惠券类型type：0->全场赠券；1->会员赠券；2->消费赠券；3->注册赠券
     *                 使用平台platform：0->全部；1->移动；2->PC
     *                 使用门槛 minPoint：0表示无门槛
     *                 使用类型 useType：0->全场通用；1->指定分类；2->指定车辆
     * @param coupon
     * @return
     */
    @ApiOperation(value = "查询全部优惠券以及根据条件查询")
    @GetMapping("queryAll")
    public Result queryAll(  Coupon coupon){
        return new Result(ReturnCode.SUCCESSS.getCode(),
                ReturnCode.SUCCESSS.getMsg(),this.couponService.queryAllCoupon(coupon));

    }

    /**
     * 根据客户查询全部以及根据条件查询
     * 根据类型查询时 优惠券类型type：0->全场赠券；1->会员赠券；2->消费赠券；3->注册赠券
     *                 使用平台platform：0->全部；1->移动；2->PC
     *                 使用门槛 minPoint：0表示无门槛
     *                 使用类型 useType：0->全场通用；1->指定分类；2->指定车辆
     * @param map
     * @return
     */
//    @ApiOperation(value = "根据客户查询全部优惠券以及根据类型查询")
//    @GetMapping("queryAllCoupon")
//    public Result queryAllCoupon(@RequestBody Map<String,Integer> map){
//
//        return new Result(ReturnCode.SUCCESSS.getCode(),
//                ReturnCode.SUCCESSS.getMsg(),this.couponService.queryAllByMember(map));
//
//    }

    /**
     * 修改优惠券
     * @param coupon
     * @return
     */
    @ApiOperation(value = "修改优惠券")
    @PutMapping("updateCoupon")
    public Result updateCoupon(@RequestBody Coupon coupon){
        return new Result(ReturnCode.SUCCESSS.getCode(),
                ReturnCode.SUCCESSS.getMsg(),this.couponService.update(coupon));

    }

    /**
     * 根据ID删除优惠券
     * @param id
     * @return
     */
    @ApiOperation(value = "根据ID删除优惠券")
    @DeleteMapping("deleteCoupon")
    public Result deleteCoupon( Integer id ){
        return new Result(ReturnCode.SUCCESSS.getCode(),
                ReturnCode.SUCCESSS.getMsg(),this.couponService.deleteById(id));

    }

    /**
     * 新增优惠券
     * @param coupon
     * @return
     */
    @ApiOperation(value = "新增优惠券")
    @PostMapping("insertCoupon")
    public Result insertCoupon(@RequestBody Coupon coupon ){
        return new Result(ReturnCode.SUCCESSS.getCode(),
                ReturnCode.SUCCESSS.getMsg(),this.couponService.insert(coupon));

    }

    @GetMapping("selectAll")
    public Result selectAll(Integer pageNo, Integer pageSize,Coupon coupon){
        return couponService.selectAll(pageNo,pageSize,coupon);

    }

//    @GetMapping("queryAllShop")
//    public Result queryAllShop(){
//        return
//    }

    @GetMapping("queryAllShop")
    public Result queryAllShop(){
        return new Result(ReturnCode.SUCCESSS.getCode(),
                ReturnCode.SUCCESSS.getMsg(),this.couponService.queryAllShop());
    }



    /**
     * 新增或修改
     * @param coupon
     * @return
     */
    @PutMapping("insertorupdate")
    public Result insertorupdate(@RequestBody Coupon coupon){
       if (coupon.getId()!=null){
        return new Result(ReturnCode.SUCCESSS.getCode(),
                ReturnCode.SUCCESSS.getMsg(),this.couponService.update(coupon));
       }
        return new Result(ReturnCode.SUCCESSS.getCode(),
                ReturnCode.SUCCESSS.getMsg(),this.couponService.insert(coupon));
    }
}